package control;

import java.awt.Color;

import model.BoardModel;

/**
 * Diese KI macht immer nur einen Schritt nach vorn, also zum Beispiel als
 * Spieler Schwarz: unten links, unten oder unten rechts
 * 
 * @author Harry
 * 
 */
public class PlayerAI1 extends PlayerAI {

	public PlayerAI1(String n, Color c, BoardModel model) {
		super(n, c, model);
	}

	public Pos getNextMove() {

		int markX = getModel().getMarkX();
		int markY = getModel().getMarkY();
		int moveX;
		int moveY;

		if (getColor() == Kamisado.PlayerWhite) {

			// falls noch keine Figur markiert ist, also nur der erste Zug
			if (!getModel().isMarked())
				// dann markiere links unten
				return new Pos(7, 0);

			// up
			moveX = markX - 1;
			moveY = markY;
			if (!getModel().isPosOutOfBoard(moveX, moveY)
					&& getModel().getField(moveX, moveY).getFigure() == null) {
				return new Pos(moveX, moveY);
			}

			// up left
			moveX = markX - 1;
			moveY = markY - 1;
			if (!getModel().isPosOutOfBoard(moveX, moveY)
					&& getModel().getField(moveX, moveY).getFigure() == null) {
				return new Pos(moveX, moveY);
			}

			// up right
			moveX = markX - 1;
			moveY = markY + 1;
			if (!getModel().isPosOutOfBoard(moveX, moveY)
					&& getModel().getField(moveX, moveY).getFigure() == null) {
				return new Pos(moveX, moveY);
			}

		}
		if (getColor() == Kamisado.PlayerBlack) {

			// falls noch keine Figur markiert ist, also nur der erste Zug
			if (!getModel().isMarked())
				// dann markiere links oben
				return new Pos(0, 0);

			// up
			moveX = markX + 1;
			moveY = markY;
			if (!getModel().isPosOutOfBoard(moveX, moveY)
					&& getModel().getField(moveX, moveY).getFigure() == null) {
				return new Pos(moveX, moveY);
			}

			// up left
			moveX = markX + 1;
			moveY = markY - 1;
			if (!getModel().isPosOutOfBoard(moveX, moveY)
					&& getModel().getField(moveX, moveY).getFigure() == null) {
				return new Pos(moveX, moveY);
			}

			// up right
			moveX = markX + 1;
			moveY = markY + 1;
			if (!getModel().isPosOutOfBoard(moveX, moveY)
					&& getModel().getField(moveX, moveY).getFigure() == null) {
				return new Pos(moveX, moveY);
			}

		}

		return null;

	}

}
